#pragma once

enum BattlePetStatus : uint32
{
    BATTLE_PET_STATUS_OK = 0,
    BATTLE_PET_STATUS_SLOT_OPEN = 1,
    BATTLE_PET_STATUS_SLOT_EMPTY = 2,
    BATTLE_PET_STATUS_INCORRECT_SLOT = 3,
    BATTLE_PET_STATUS_PET_CANT_FIGHT = 5,
    BATTLE_PET_STATUS_PET_NOT_AVAILABLE_FOR_COMBAT = 6,
    BATTLE_PET_STATUS_PET_IS_DIED = 7,
    BATTLE_PET_STATUS_NOT_BATTLE_PET_IN_SLOT = 8,
    BATTLE_PET_STATUS_CANT_JOIN_TO_QUEUE = 9,
};

enum LFBUpdateStatus : uint32
{
    LFB_NONE = 0,
    LFB_JOIN_QUEUE = 1,
    LFB_UPDATE_STATUS = 2,
    LFB_ALREADY_QUEUED = 3,
    LFB_CANT_JOIN_QUEUE = 4,
    LFB_CANT_JOINT_QUEUE_DUE_TO_PET_STATUS = 5, // send it with pet status
    LFB_PET_ATLAS_IS_UNAVAILABLE_DURING_BATTLE = 6,
    LFB_CANT_JOIN_DUE_TO_UNSELECTED_FACTION = 7,
    LFB_PROPOSAL_BEGIN = 8,
    LFB_PROPOSAL_DECLINED = 9,
    LFB_OPPONENT_PROPOSAL_DECLINED = 10,
    LFB_PROPOSAL_FAILED = 11,
    LFB_LEAVE_QUEUE = 12,
    LFB_QUEUE_ERROR = 13,
    LFB_OPPONENT_IS_UNAVAILABLE = 14,
    LFB_PET_BATTLE_IS_STARTED = 20,
    LFB_INVALIDE_LOCATION = 21,
};

enum LfbProposalState : uint32
{
    LFB_PROPOSAL_STATE_INITIATING = 0,
    LFB_PROPOSAL_STATE_FAILED = 1,
    LFB_PROPOSAL_STATE_SUCCESS = 2
};

enum LfbAnswer : int32
{
    LFB_ANSWER_PENDING = -1,
    LFB_ANSWER_DENY = 0,
    LFB_ANSWER_AGREE = 1
};

enum LFBState : uint32
{
    LFB_STATE_NONE = 0,
    LFB_STATE_QUEUED = 1,
    LFB_STATE_PROPOSAL = 2,
    LFB_STATE_IN_COMBAT = 3,
    LFB_STATE_FINISHED = 4,
};